草庐IT

c++ - 少走弯路的API Hooking

全部标签

c++ - 是否有任何理由避免使用 tmpnam() 来获取临时文件的名称?

我打算使用tmpnam()命名一个临时文件,稍后将重命名,而不是删除。但是我找到了以下文档,现在我对上面写的部分很感兴趣“...天真的程序员可能认为它是临时文件的合适名称。”来自http://man7.org/linux/man-pages/man3/tmpnam.3.htmlThetmpnam()functionreturnsapointertoastringthatisavalidfilename,andsuchthatafilewiththisnamedidnotexistatsomepointintime,sothatnaiveprogrammersmaythinkitasui

c++ - 我需要非常快地计算斯特林的近似值

我正在编写一个用于统计抽样的小型库,它需要尽可能快地运行。在分析中,我发现该函数大约40%的时间花在了计算Stirling'sapproximation上。对于阶乘的对数。我将我的优化工作集中在这一部分上。这是我的代码(使用MPFR):constdoubleAL[8]={0.0,0.0,0.6931471806,1.791759469,3.178053830,4.787491743,6.579251212,8.525161361};voidHGD::mpfr_afc(mpfr_t&ret,constmpfr_t&val){if(mpfr_cmp_ui(val,7)我有几个不同的想法:预

c++ - 有什么方法可以在运行时不间断地动态更新二进制文件(可执行文件)?

假设我们在1年前用C++制作了一个程序,它一直在连续工作,没有任何停止!在1年前,我们不知道有一天我们应该更新它(由于修复了一些错误)。所以我们没有实现任何DSU(动态软件更新)说明。它也不在让我也可以访问它的内存或上下文的虚拟机中运行。现在如何在不停止的情况下对其进行更新(添加或删除一些函数、数据类型或指令)。有什么建议吗?谢谢。 最佳答案 您必须为其附加一个调试器。在不会破坏任何东西的执行点停止它,替换可执行镜像,重新对齐指令指针,如果您选择了错误的中断点,您还必须重新对齐堆栈并修改可能受到影响/添加的变量新的代码。这比您想拥有

c++ - CMake:将 ELF 嵌入到可执行文件中

我有一个项目需要访问嵌入到specialsection中可执行文件中的ELF文件.我以前手工制作Makefile,只是有一个shell脚本,我在其中使用objcopy将我想要嵌入的目标复制到一个.o文件中,然后在可执行文件中链接到该文件。#Createanewsectionandcopythebinarythere($1=input$2=outputname)objcopy--input-targetbinary--output-targetelf64-x86-64\--binary-architecturei386$1$2.o现在我想摆脱自定义Makefile并使用CMake生成它们

c++ - 对于具有 UIAccess ="true"的进程,CreateProcessAsUser 失败并显示 ERROR_ELEVATION_REQUIRED

我正在尝试使用以下代码从我的服务应用程序运行用户模式进程(作为本地系统运行。)用户模式进程的要求是在没有提升的情况下运行,但在其list中有UIAccess="true"以便能够displaytop-mostwindowscorrectlyunderWindows8.所以我这样做(通过我的服务)来运行我的用户模式进程://NOTE:Errorcheckingisomittedforreadability//'dwSessionID'=usersessionIDtorunuser-modeprocessin//'pUserProcPath'=L"C:\\ProgramFiles(x86)

c++ - gdb 重新设置断点时出错(无法访问内存)

我正在尝试让gdb在pcbsd10(freebsd10)中设置一个断点。我已经用调试符号编译了我的代码,这里是gdb的输出GNUgdb(GDB)7.7Copyright(C)2014FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarranty"fordetails

c++ - 假设我不使用任何重载函数,有没有办法可以停止所有名称修改?

这个问题在这里已经有了答案:Isthereawaytosuppressc++namemangling?(3个答案)关闭8年前。标题几乎说明了一切。我知道我可以使用和外部“C”block来停止重整(虽然我不完全确定我应该把这个block放在哪里)但是有没有办法在整个程序中禁用它?如果我这样做,是否会使从代码编译的库更容易与luajit的FFI之类的东西一起使用?编辑:这被认为是重复的问题特定于DLL和VisualC++编译器。我只是问一个一般的C++问题。

c++ - 在 C/C++ 中查找字符串中具有任意字符顺序的子字符串

假设我有一个字符串“abcdpqrs”,现在“dcb”可以算作上述字符串的子字符串,因为字符在一起。“pdq”也是上述字符串的一部分。但是“bcpq”不是。我希望你得到我想要的。有什么有效的方法可以做到这一点。我所能想到的就是借助哈希来做到这一点。但即使在O(n)程序中也需要很长时间,因为在许多情况下需要回溯。任何帮助将不胜感激。 最佳答案 这是一个O(n*alphabetsize)的解决方案:让我们维护一个数组count[a]=字符a在当前窗口出现了多少次[pos;pos+子串的长度-1]。窗口向右移动1(count[s[pos]

c++ - 为什么未初始化的 const 成员在 C 中的处理方式与在 C++ 中的处理方式不同?

这个问题在这里已经有了答案:constinCvsconstinC++(5个答案)关闭7年前。我为要链接的库包含一个Cheader。header有一个结构foo,我想在其中声明一个新变量bar。我收到编译器错误:error:uninitializedconstmemberin"structfoo"这些成员需要初始化是有道理的,因为以后不能为它们赋值。但是使用这个库的C程序可以做完全相同的事情并且它可以工作。C和C++标准有区别吗?这只是一个示例。实际上,我指的是libmtd.h(mtd-utils)中的结构mtd_dev_info。http://mtd-utils.sourcearchi

c++ - cmake find_library 和 CMAKE_FIND_ROOT_PATH

在cmake的find_library函数的文档中,我们有TheCMakevariableCMAKE_FIND_ROOT_PATHspecifiesoneormoredirectoriestobeprependedtoallothersearchdirectories.Thiseffectively“re-roots”theentiresearchundergivenlocations.PathswhicharedescendantsoftheCMAKE_STAGING_PREFIXareexcludedfromthisre-rooting,becausethatvariableisa